package MyFuncGetIndex

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

func GetIndex(context *gin.Context) {
	context.HTML(200, "demo01/index.html", nil)
}

/*
定义要绑定的结构体
*/
type User struct {
	//加入标签：绑定的时候需要指定将form表单中的username绑定到Username上
	Uname string `form:"username"`
	//加入标签：绑定的时候需要指定将form表单中的age绑定到age上
	Age int `form:"age"`
}

/*
*

	绑定form 表单
*/
func BandingForm(context *gin.Context) {
	//创建要绑定的结构体实例
	var user User
	err := context.ShouldBind(&user)
	fmt.Println(user)
	if err != nil {
		context.HTML(http.StatusNotFound, "demo01/bandingformok.html", gin.H{
			"msg": "绑定失败",
		})
	} else {
		context.HTML(http.StatusOK, "demo01/bandingformok.html", gin.H{
			"msg": "绑定成功",
		})
	}
}

/*
绑定url
*/
func BandingUrl(context *gin.Context) {
	//创建要绑定的结构体实例
	var user User
	err := context.ShouldBind(&user)
	fmt.Println(user)
	if err != nil {
		context.HTML(http.StatusNotFound, "demo01/bangdingurlok.html", gin.H{
			"msg": "绑定失败",
		})
	} else {
		context.HTML(http.StatusOK, "demo01/bangdingurlok.html", gin.H{
			"msg": "绑定成功",
		})
	}
}

func JsonIndex(context *gin.Context) {
	fmt.Println("JsonIndex方法被调用了")

	context.HTML(200, "demo01/jsonindex.html", nil)

}

/**
绑定json的结构体
*/

type User2 struct {
	UName string `json:"uname"`
	Age   string `json:"age"`
}

func AjaxJson(context *gin.Context) {
	fmt.Println("AjaxJson被调用了")
	//定义结构绑定json的结构体变量
	var stu User2
	err := context.ShouldBind(&stu)
	//打印结构体对象的内容：
	fmt.Println(stu)

	if err != nil {
		context.JSON(404, gin.H{
			"msg": "绑定失败",
		})
	} else {
		context.JSON(200, gin.H{
			"msg": "绑定成功",
		})
	}

}

/*
	绑定uri的结构体
*/

type User3 struct {
	UName string `uri:"uname"`
	Age   string `uri:"age"`
}

func GetBindUri(context *gin.Context) {
	//进行结构体变量的定义
	var user User3
	err := context.ShouldBindUri(&user)
	fmt.Println(user)
	if err != nil {
		context.String(404, "绑定失败")
	} else {
		context.String(200, "绑定成功")
	}
}
